import { AxiosRequestConfig } from 'axios'
import { createAxiosInstance } from './createAxiosInstance'

export interface RespOpt<T = any> {
  success: boolean
  msg: boolean
  data: T
}

export type PromiseRespOpt<T = any> = Promise<RespOpt<T>>

// 系统axios实例
const systemInstance = createAxiosInstance()

/**
 * 返回拦截器
 */
systemInstance.interceptors.response.use((response) => {
  return response
})

// 请求拦截器
systemInstance.interceptors.request.use((config) => {
  return config
})

/**
 * POST 请求方法
 * @param url 请求地址
 * @param data 请求数据
 * @param config 配置
 * @returns 返回结果
 */
export function postRequest<T>(
  url: string,
  data: any,
  config: AxiosRequestConfig
): PromiseRespOpt<T> {
  return systemInstance.post(url, data, config)
}

/**
 * get请求方法
 * @param url 地址
 * @param config 配置
 * @returns 返回结构
 */
export function getRequest<T>(
  url: string,
  config: AxiosRequestConfig
): PromiseRespOpt<T> {
  return systemInstance.get(url, config)
}
